xc2xa7 1.1 FIELD OF THE INVENTION
The present invention concerns producing more legible text on video displays, such as flat panel video monitors including liquid crystal display (or LCD) video monitors for example, having horizontal striping.
xc2xa7 1.2 RELATED ART
The present invention may be used in the context of flat panel video monitors, such as LCD video monitors for example. In particular, the present invention may be used as a part of processing to produce more legible text on LCD video monitors having horizontal striping.
Color display devices have become the principal display devices of choice for most computer users. Color is rendered on a display monitor by operating the display monitor to emit light (such as a combination of red, green, and blue light for example) which results in one or more colors being perceived by the human eye. Although color video monitors in general, and LCD video monitors in particular, are known to those skilled in the art, they are introduced below for the reader""s convenience. In xc2xa7 1.2.1 below, cathode ray tube (or CRT) video monitors are first introduced. Then, in xc2xa7 1.2.2 below, LCD video monitors are introduced.
xc2xa7 1.2.1 CRT VIDEO MONITORS
Cathode ray tube (CRT) display devices include a screen having phosphor coatings which may be applied as dots in a sequence. A different phosphor coating is normally associated with the generation of different colors, such as red, green, and blue for example. Consequently, repeated sequences of phosphor dots are defined on the screen of the video monitor. One or more electron guns generate electron beams which are swept, typically left to right and top to bottom, across the screen. When a phosphor dot is irradiated by an electron beam, it will glow thereby rendering its associated color, such as red, green and blue for example.
The term xe2x80x9cpixelxe2x80x9d is commonly used to refer to one spot in a group of spots, such as a rectangular grid of thousands of such spots for example. The spots are selectively activated to form an image on the display device. In most color CRTs, a single triad of red, green and blue phosphor dots cannot be uniquely selected. Consequently, the smallest possible pixel size will depend on the focus, alignment and bandwidth of the electron guns used to excite the phosphor dots. The light emitted from one or more triads of red, green and blue phosphor dots, in various arrangements known for CRT displays, tend to blend together giving, at a distance, the appearance of a single colored light source.
In color displays, the intensity of the light emitted from the additive primary colors (such as red, green and blue for example) can be varied to achieve the appearance of almost any desired color pixel. Adding no color, that is, emitting no light, produces a black pixel. Adding 100 percent of all three (3) colors produces a white pixel.
Having introduced color CRT video monitors, color LCD video monitors are now introduced in xc2xa7 1.2.2 below.
xc2xa7 1.2.2 LCD VIDEO MONITORS
Portable computing devices (also referred to generally as computing appliances or untethered computing appliances) often use liquid crystal displays (LCDs) or other flat panel display devices, instead of CRT displays. This is because flat panel displays tend to be smaller and lighter than CRT displays. In addition, flat panel displays are well suited for battery powered applications since they typically consume less power than comparably sized CRT displays.
Color LCD displays are examples of display devices which distinctly address pixel elements to represent each pixel of an image being displayed. Normally, each pixel element of a color LCD display includes three (3) non-square elements (also referred to as xe2x80x9csub-pixel elementsxe2x80x9d or xe2x80x9csub-pixel componentsxe2x80x9d). More specifically, each pixel element may include adjacent red, green and blue (RGB) sub-pixel elements. Thus, a set of RGB sub-pixel elements together define a single pixel element. Some LCD displays may have non-square pixels and/or pixels which are defined by more than three (3) sub-pixel elements.
Known LCD displays generally include a series of RGB sub-pixel elements which are commonly arranged to form stripes along the display. The RGB stripes normally run the entire length of the display in one direction. The resulting RGB stripes are sometimes referred to as xe2x80x9cRGB stripingxe2x80x9d. Many LCD monitors, used for computer applications, are wider than they are tall, and tend to have RGB vertical stripes. On the other hand, many LCD monitors used in untethered or handheld computing appliances are taller than they are wide, and tend to have RGB horizontal stripes. The present invention may be used when rendering text on monitors, such as LCD RGB monitors for example, which have horizontal striping.
FIG. 1 illustrates a known LCD screen 100 comprising pixels arranged in a plurality of rows (R1-R8) and columns (C1-C6). That is, a pixel is defined at each row-column intersection. Each pixel includes a red sub-pixel element, depicted with hatching, a green sub-pixel element, depicted with cross hatching, and a blue sub-pixel element, depicted with no hatching. FIG. 2 illustrates the upper portion of the known display 100 in greater detail. Note how each pixel element, e.g., the (R1, C6) pixel element, comprises three distinct sub-pixel elements or sub-pixel components; a red sub-pixel element 210, a green sub-pixel element 220 and a blue sub-pixel element 230. Each known sub-pixel element 210, 220, 230 is ⅓, or approximately ⅓, the height of a pixel while being equal, or approximately equal, in width to the width of a pixel. Thus, when combined, the three ⅓ height, full width, sub-pixel elements 210, 220, 230 define a single pixel element.
Referring back to FIG. 1, one known arrangement of RGB pixel sub-components 210, 220, 230 define horizontal color stripes on the display 100. Accordingly, the arrangement of ⅓ height color sub-pixel elements 210, 220, 230, in the known manner illustrated in FIGS. 1 and 2, exhibit what is sometimes called xe2x80x9chorizontal striping.xe2x80x9d.
In known systems, the RGB sub-pixel elements are generally addressed and used as a group to generate a single colored pixel corresponding to a single sample of the image to be represented. More specifically, in known systems, luminous intensity values for all of the sub-pixel elements of a pixel element are generated from a single sample of the image to be represented. For example, referring to FIG. 3, an image section 300 is segmented into twelve (12) squares by the grid 310. Each square of the grid 310 defined by the segmented image section 300 represents an area of the image section 300 which is to be represented by a single pixel element. In FIG. 3, a hatched circle 320 is used to represent a single image sample from which luminous intensity values associated with the red, green, and blue sub-pixel elements 330, 332, and 334 of the associated pixel are generated.
Having introduced the general structure and operation of known LCD displays, known techniques for rendering text on such LCD displays, as well as perceived shortcomings of such known techniques, are introduced in xc2xa7 1.2.2.1 below.
xc2xa7 1.2.2.1 RENDERING TEXT ON LCD DISPLAYS
Apart from pure image or video information, LCD displays are often used for rendering textual information. For example, a personal information manager may be used to render contact information, such as a person""s address, telephone number, fax number, and e-mail address for example, on an untethered computing device.
The expression of textual information using font sets is introduced in xc2xa7 1.2.2.1.1 below. Then, the rendering of textual information using so-called pixel precision and perceived shortcomings of doing so are introduced in xc2xa7 1.2.2.1.2 below.
xc2xa7 1.2.2.1.1 FONT SETS
A xe2x80x9cfontxe2x80x9d is a set of characters of the same typeface (such as Times Roman, Courier New, etc.), the same style (such as italic), the same weight (such as bold and, strictly speaking, the same size). Characters may include symbols, such as the xe2x80x9cParties MTxe2x80x9d, xe2x80x9cWebbingxe2x80x9d, and xe2x80x9cWindingsxe2x80x9d symbol groups found on the Word(trademark) word processor from Microsoft Corporation of Redmond, Washington for example. A xe2x80x9ctypefacexe2x80x9d is a specific named design of a set of printed characters (e.g., Helvetica Bold Oblique), that has a specified obliqueness (i.e., degree of slant) and stoke weight (i.e., line thickness). Strictly speaking, a typeface is not the same as a font, which is a specific size of a specific typeface (such as 12-point Helvetica Bold Oblique). However, since some fonts are xe2x80x9cscalablexe2x80x9d, the terms xe2x80x9cfontxe2x80x9d and xe2x80x9ctypefacexe2x80x9d may sometimes be used interchangeably. A xe2x80x9ctypeface familyxe2x80x9d is a group of related typefaces. For example, the Helvetica family may include Helvetica, Helvetica Bold, Helvetica Oblique and Helvetica Bold Oblique.
Many modern computer systems use font outline technology, such as scalable fonts for example, to facilitate the rendering and display of text. TrueType(trademark) fonts from Microsoft Corporation of Redmond, Wash. are an example of such technology. In such systems, various font sets, such as xe2x80x9cTimes New Roman,xe2x80x9d xe2x80x9cOnyx,xe2x80x9d xe2x80x9cCourier New,xe2x80x9d etc. for example, may be provided. The font set normally includes a high resolution outline representation, such as a series of contours for example, for each character which may be displayed using the provided font set. The contours may be straight lines or curves for example. Curves may be defined by a series of points that describe second order Bezier-splines for example. The points defining a curve are typically numbered in consecutive order. The ordering of the points may be important. For example, the character outline may be xe2x80x9cfilledxe2x80x9d to the right of curves when the curves are followed in the direction of increasing point numbers. Thus the high resolution character outline representation may be defined by a set of points and mathematical formulas.
The point locations may be described in xe2x80x9cfont unitsxe2x80x9d for example. A xe2x80x9cfont unitxe2x80x9d may be defined as the smallest measurable unit in an xe2x80x9cemxe2x80x9d square, which is an imaginary square that is used to size and align glyphs (a glyph can be thought of as a character). FIG. 9 illustrates an xe2x80x9cemxe2x80x9d square 910 around a character outline 920 of the letter Q. Historically, an xe2x80x9cemxe2x80x9d was approximately equal to the width of a capital M. Further, historically, glyphs could not extend beyond the em square. More generally, however, the dimensions of an xe2x80x9cemxe2x80x9d square are those of the full body height 940 of a font plus some extra spacing. This extra spacing was provided to prevent lines of text from colliding when typeset without extra leading was used. Further, in general, portions of glyphs can extend outside of the em square. The coordinates of the points defining the lines and curves (or contours) may be positioned relative to a baseline 930 (Y coordinate=0). The portion of the character outline 920 above the baseline 930 is referred to as the xe2x80x9cascentxe2x80x9d 942 of the glyph. The portion of the character outline 920 below the baseline 930 is referred to as the xe2x80x9cdecentxe2x80x9d 944 of the glyph. Note that in some languages, such as Japanese for example, the characters sit on the baseline, with no portion of the character extending below the baseline.
The stored outline character representation normally does not represent space beyond the maximum horizontal and vertical boundaries of the character (also referred to as xe2x80x9cwhite spacexe2x80x9d or xe2x80x9cside bearingsxe2x80x9d). Therefore, the stored character outline portion of a character font is often referred to as a black body (or BB). A font generator is a program for transforming character outlines into bitmaps of the style and size required by an application. Font generators (also referred to as xe2x80x9crasterizersxe2x80x9d) typically operate by scaling a character outline to a requested size and can often expand or compress the characters that they generate.
In addition to stored black body character outline information, a character font normally includes black body size, black body positioning, and overall character width information. Black body size information is sometimes expressed in terms of the dimensions of a bounding box used to define the vertical and horizontal borders of the black body.
Certain terms used to define a character are now defined with reference to FIG. 4, which illustrates character outlines of the letters A and I 400. Box 408 is a bounding box which defines the size of the black body 407 of the character (A). The total width of the character (A), including white space to be associated with the character (A), is denoted by an advance width (or AW) value 402. The advance width typically starts to a point left of the bounding box 408. This point 404 is referred to as the left side bearing point (or LSBP). The left side bearing point 404 defines the horizontal starting point for positioning the character (A) relative to a current display position. The horizontal distance 410 between the left end of the bounding box 408 and the left side bearing point 404 is referred to as the left side bearing (or LSB). The left side bearing 410 indicates the amount of white space to be placed between the left end of the bounding box 408 of a current character (A) and the right side bearing point of the preceding character (not shown). The point 406 to the right of the bounding box 408 at the end of the advance width 402 is referred to as the right side bearing point (or RSBP). The right side bearing point 406 defines the end of the current character (A) and the point at which the left side bearing point 404xe2x80x2 of the next character (I) should be positioned. The horizontal distance 412 between the right end of the bounding box 408 and the right side bearing point 406 is referred to as the right side bearing (or RSB). The right side bearing 412 indicates the amount of white space to be placed between the right end of the bounding box 408 of a current character (A) and the left side bearing point 404xe2x80x2 of the next character (I). Note that the left and right side bearings may have zero (0) or negative values. Note also that in characters used in Japanese and other Far Eastern languages, metrics analogous to advance width, left side bearing and right side bearingxe2x80x94namely, advance height (AH), top side bearing (TSB) and bottom side bearing (BSB)xe2x80x94may be used.
As discussed above, a scalable font file normally includes black body size, black body positioning, and overall character width information for each supported character. The black body size information may include horizontal and vertical size information expressed in the form of bounding box 408 dimensions. The black body positioning information may expressed as a left side bearing value 410. Overall character width information may be expressed as an advance width 402.
xc2xa7 1.2.2.1.2 RENDERING TEXT TO PIXEL PRECISION
Recall that font generators convert a black body character outline into a bitmap. This conversion may consider the point size of the font to be rendered, and the resolution (e.g., dots per inch, pixels per inch, etc.) of the device (e.g., a video display, a printer, etc.) which will ultimately render the text. Most computer systems force the starting and ending points (Recall, for example, the left side bearing points and the right side bearing points, respectively) of characters to be rendered to be positioned on pixel boundaries. In addition, such computer systems usually force or convert the black body width and the left side bearing to be integer multiples of the pixel size. In known implementations, these constraints are enforced by (i) scaling the size and positioning information included in a character font as a function of the point size and device resolution as just described above, and (ii) then rounding the size and positioning values to integer multiples of the pixel size used in the particular display device. Using pixel size units as the minimum (or xe2x80x9catomicxe2x80x9d) distance unit produces what is called xe2x80x9cpixel precisionxe2x80x9d since the values are accurate to the size of one (1) pixel.
Rounding size and positioning values of character fonts to pixel precision introduces changes, or errors, into displayed images. Each of these errors may be up to xc2xd a pixel in size (assuming that values less than xc2xd a pixel are rounded down and values greater than or equal to xc2xd a pixel are rounded up). Thus, the overall width of a character may be less precise than desired since the character""s AW is (may be) rounded. In addition, the positioning of a character""s black body within the total horizontal space allocated to that character may be sub-optimal since the left side bearing is (may be) rounded. At small point sizes, the changes introduced by rounding using pixel precision can be significant.
xc2xa7 1.2.3 UNMET NEEDS
In view of the errors introduced when rounding character values to pixel precision as introduced in xc2xa7 1.2.2.1.2 above, methods and apparatus to improve text resolution are needed. The improvements to the legibility and perceived quality of text should work on displays, such as RGB LCDs for example, with horizontal striping, as well as those with vertical striping.
The present invention increases the resolution of text rendered on a display device having sub-pixel elements, such as an RGB LCD for example, and in particular, on a display device having horizontal striping. The present invention may do so by (i) overscaling (or oversampling) character outline information in the vertical (or Y) direction, and (ii) filtering (e.g., averaging) displaced (either overlapping, immediately adjacent, or spaced) scan conversion source samples from the overscaled (or oversampled) character outline information.
The present invention may also appropriately adjust metrics associated with the character outline information (such as left side bearing, advance width, vertical character size, ascent, descent, etc.).
The present invention may also constrain the vertical (or Y) position of the baseline of adjacent characters by forcing the first pixel above the baseline to be composed of a full number N of scan conversion source samples, where N corresponds to an overscaling (or oversampling) factor. This prevents xe2x80x9cjumpingxe2x80x9d or xe2x80x9cbouncingxe2x80x9d baselines.
The present invention may also convert groups of scan conversion source samples into packed pixel index values.
The present invention may also selectively filter color values when the differences in the intensity of adjacent sub-pixel elements would otherwise be irritating to view.
Finally, the present invention may correct the gamma of the pixel values (or to achieve an effect similar to gamma correction) so that the gamma of the display device is considered and so that intensity values of sub-pixel elements fall within a range of intensities in which gamma correction is more useful.
FIG. 1 illustrates a known arrangement of sub-pixel elements of an LCD display having horizontal striping.
FIG. 2 illustrates a portion of FIG. 1 in greater detail.
FIG. 3 illustrates a known image sampling operation.
FIG. 4 illustrates known ways of representing character information.
FIG. 5A is a block diagram of a computer system which may be used to implement at least certain aspects of the present invention.
FIG. 5B is a high level block diagram of a machine which may be used to implement at least certain aspects of the present invention.
FIG. 6 illustrates an image sampling technique with which the present invention may be used.
FIG. 7 is a diagram of high level processes of an environment in which at least certain aspects of the present invention may operate.
FIG. 8 is a diagram of graphics display interface processes of an environment in which at least certain aspects of the present invention may operate.
FIG. 9 illustrates certain typographic terms which are used when describing certain aspects of the present invention.
FIG. 10 is a high level flow diagram of a first method for effecting an overscaling or oversampling process.
FIG. 11 is an example which illustrates the operation of the method depicted in FIG. 10.
FIG. 12 is a high level flow diagram of a second method for effecting an overscaling or oversampling process.
FIG. 13 is an example which illustrates the operation of the method depicted in FIG. 12.
FIG. 14 is a high level flow diagram of a method for effecting a hinting process.
FIGS. 15A and 15B are examples which illustrate the operation of the hinting method of FIG. 14.
FIG. 16 is a high level flow diagram of a first method for effecting a scan conversion process.
FIG. 17 is a high level flow diagram of a second method for effecting a scan conversion process.
FIGS. 18A and 18B illustrate the usefulness of zero padding steps in the scan conversion methods of FIGS. 16 and 17.
FIG. 19 is an example which illustrates an exemplary scan conversion process.
FIGS. 20A and 20B illustrate the storage and retrieval of scan conversion source samples (or more generally, information).
FIG. 21 is an exemplary data structure which may be used to store glyph information in a glyph cache.
FIG. 22 is a high level flow diagram of an exemplary method for effecting a display driver management process.
FIG. 23 is a high level flow diagram of an exemplary method for effecting a color compensation (or color filtering) process.
FIG. 24 is a high level flow diagram of an exemplary method for effecting a gamma correction method.